﻿using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using LiveTiss.Classes;
using LiveTiss.Schemas;

namespace LiveTiss.Guias
{
    public partial class GuiaResumoInternacaoReapresentacao : UserControl
    {
        #region Guia Resumo Internação

        public ct_guiaResumoInternacaoReapresentacao Guia
        {
            get { return (ct_guiaResumoInternacaoReapresentacao)GetValue(GuiaProperty); }
            set { SetValue(GuiaProperty, value); }
        }

        public static readonly DependencyProperty GuiaProperty =
            DependencyProperty.Register("Guia", typeof(ct_guiaResumoInternacaoReapresentacao), typeof(GuiaResumoInternacaoReapresentacao), new PropertyMetadata(null));

        #endregion

        public GuiaResumoInternacaoReapresentacao()
        {
            this.DataContext = this;

            this.InitializaValues();

            InitializeComponent();
        }

        private void InitializaValues()
        {
            if (this.Guia == null)
            {
                this.Guia = new ct_guiaResumoInternacaoReapresentacao()
                {
                    acomodacao = st_tipoAcomodacao.Item1,
                    caraterInternacao = st_eletivaEmergencia.E,
                    dadosAutorizacao = new ct_autorizacaoGuia()
                    {
                        dataAutorizacao = Util.EmptyDate,
                        dataAutorizacaoSpecified = false,
                        senhaAutorizacao = string.Empty,
                        validadeSenha = Util.EmptyDate,
                        validadeSenhaSpecified = false
                    },
                    dadosBeneficiario = new ct_beneficiario()
                    {
                        identificadorBeneficiario = new byte[] { },
                        nomeBeneficiario = string.Empty,
                        nomePlano = string.Empty,
                        numeroCarteira = string.Empty,
                        numeroCNS = string.Empty,
                        validadeCarteira = Util.EmptyDate,
                        validadeCarteiraSpecified = false
                    },
                    dataHoraInternacao = Util.EmptyDate,
                    dataHoraSaidaInternacao = Util.EmptyDate,
                    dataHoraSaidaInternacaoSpecified = false,
                    diagnosticosSaidaInternacao = new ct_diagnosticoSaidaInternacao()
                    {
                        diagnosticoPrincipal = new ct_diagnostico()
                        {
                            codigoDiagnostico = string.Empty,
                            descricaoDiagnostico = string.Empty,
                            nomeTabela = st_tabelasDiagnostico.CID10
                        },
                        diagnosticosSecundarios = new List<ct_diagnostico>(
                            new ct_diagnostico[]
                            {
                                new ct_diagnostico()
                                {
                                    codigoDiagnostico = string.Empty,
                                    descricaoDiagnostico = string.Empty,
                                    nomeTabela = st_tabelasDiagnostico.CID10
                                }
                            }
                        ),
                        indicadorAcidente = st_indicadorAcidente.Item0,
                        indicadorAcidenteSpecified = false,
                        motivoSaidaInternacao = st_motivoSaida.Item11,
                        obito = new List<ct_obitoInternacao>()
                    },
                    identificacaoExecutante = new ct_contratado()
                    {
                        enderecoContratado = new ct_endereco()
                        {
                            cep = string.Empty,
                            codigoIBGEMunicipio = string.Empty,
                            codigoUF = st_UF.AC,
                            complemento = string.Empty,
                            logradouro = string.Empty,
                            municipio = string.Empty,
                            numero = string.Empty,
                            tipoLogradouro = st_tipoLogradouro.Item001

                        },
                        identificacao = new ct_identificacaoPrestadorExecutante()
                        {
                            ItemElementName = ItemChoiceType.CNPJ,
                            ItemValue = string.Empty
                        },
                        nomeContratado = string.Empty,
                        numeroCNES = string.Empty
                    },
                    identificacaoGuiaInternacao = new ct_cabecalhoGuia()
                    {
                        _dataEmissaoGuia = Util.EmptyDate,
                        dataEmissaoGuia = Util.EmptyDate,
                        identificacaoFontePagadora = new ct_cabecalhoGuiaIdentificacaoFontePagadora()
                        {
                            ItemElementName = ItemChoiceType1.cnpjFontePagadora,
                            ItemValue = string.Empty
                        },
                        LogoPrestadora = new byte[] { },
                        numeroGuiaOperadora = string.Empty,
                        numeroGuiaPrestador = string.Empty
                    },
                    internacaoObstetrica = new ct_internacaoObstetrica()
                    {
                        aborto = false,
                        abortoSpecified = true,
                        atendimentoRNSalaParto = false,
                        atendimentoRNSalaPartoSpecified = true,
                        baixoPeso = false,
                        baixoPesoSpecified = true,
                        complicacaoNeonatal = false,
                        complicacaoNeonatalSpecified = true,
                        complicacaoPeriodoPuerperio = false,
                        complicacaoPeriodoPuerperioSpecified = true,
                        declaracoesNascidosVivos = new List<string>(),
                        emGestacao = false,
                        emGestacaoSpecified = true,
                        obitoMulher = st_obitoMulher.Item1,
                        obitoMulherSpecified = true,
                        partoCesareo = false,
                        partoCesareoSpecified = true,
                        partoNormal = false,
                        partoNormalSpecified = true,
                        qtdNascidosMortos = string.Empty,
                        qtdNascidosVivosTermo = string.Empty,
                        qtdVivosPrematuros = string.Empty,
                        transtornoMaternoRelGravidez = false,
                        transtornoMaternoRelGravidezSpecified = true
                    },
                    numeroGuiaSolicitacao = string.Empty,
                    obitoNeonatal = new ct_obitoNeonatal() //opcional
                    {
                        ItemValue = string.Empty,
                        ItemElementName = ItemChoiceType5.qtdeobitoPrecoce
                    },
                    observacao = string.Empty,//opcional
                    OPMUtilizadas = new ct_OPMUtilizadasRevisao() //opcional
                    {
                        OPMUtilizada = new List<ct_OPMUtilizadasRevisaoOPM>(),
                        valorTotalOPM = 0,
                        valorTotalOPMSpecified = true
                    },
                    outrasDespesas = new ct_outrasDespesasRevisao()//opcional
                    {
                        itensDespesas = new List<ct_outrasDespesasRevisaoItensDespesas>(),
                        totalGeralOutrasDespesas = 0,
                        totalGeralOutrasDespesasSpecified = true
                    },
                    procedimentosRealizados = new List<ct_procedimentoRevisaoProcedimentosRevisao>(new ct_procedimentoRevisaoProcedimentosRevisao[]
                        {
                            new ct_procedimentoRevisaoProcedimentosRevisao()
                            {
                                data = Util.EmptyDate,
                                horaFim = Util.EmptyDate,
                                horaFimSpecified = false,
                                horaInicio = Util.EmptyDate,
                                horaInicioSpecified = false,
                                procedimento = new ct_tabela()
                                {
                                    codigo = string.Empty,
                                    descricao = string.Empty,
                                    tipoTabela = st_tabela.Item00
                                },
                                quantidadeRealizada = 0,//max 7 digitos, 4 casas decimais
                                reducaoAcrescimo = 0,//max 5 digitos, 2 casas decimais
                                reducaoAcrescimoSpecified =true,
                                tecnicaUtilizada = st_tecnicaUtilizada.C,
                                tecnicaUtilizadaSpecified  = true,
                                valor = 0,//10 digitos,2 casas decimais
                                valorSpecified = true,
                                valorTotal = 0,//10 digitos,2 casas decimais
                                valorTotalSpecified = true,
                                viaAcesso = st_viaDeAcesso.D,
                                viaAcessoSpecified = true,
                                justificativaRevisao = string.Empty
                            }
                        }),
                    regimeInternacao = st_regimeInternacao.Item1,
                    tipoFaturamento = st_tipoFaturamento.P,
                    tipoInternacao = st_tipoInternacao.Item1,
                    valorTotal = new ct_valorTotalServicos()
                    {
                        diarias = decimal.Zero,
                        diariasSpecified = false,
                        gases = decimal.Zero,
                        gasesSpecified = false,
                        materiais = decimal.Zero,
                        materiaisSpecified = false,
                        medicamentos = decimal.Zero,
                        medicamentosSpecified = false,
                        servicosExecutados = decimal.Zero,
                        servicosExecutadosSpecified = false,
                        taxas = decimal.Zero,
                        taxasSpecified = false,
                        totalGeral = decimal.Zero,
                        totalGeralSpecified = false
                    }
                };
            }
        }
    }
}
